.class public final Lr;
.super Ljava/lang/Object;


# static fields
.field private static final Z:[I


# instance fields
.field private B:I

.field private C:I

.field public Code:[I

.field public I:I

.field private J:I

.field private a:I

.field private b:I

.field private c:I

.field private d:I

.field private e:I

.field private f:[B

.field private g:I

.field private h:I


# direct methods
.method public static constructor <clinit>()V
    .locals 3

    const-string v0, "428a2f9871374491b5c0fbcfe9b5dba53956c25b59f111f1923f82a4ab1c5ed5d807aa9812835b01243185be550c7dc372be5d7480deb1fe9bdc06a7c19bf174e49b69c1efbe47860fc19dc6240ca1cc2de92c6f4a7484aa5cb0a9dc76f988da983e5152a831c66db00327c8bf597fc7c6e00bf3d5a7914706ca63511429296727b70a852e1b21384d2c6dfc53380d13650a7354766a0abb81c2c92e92722c85a2bfe8a1a81a664bc24b8b70c76c51a3d192e819d6990624f40e3585106aa07019a4c1161e376c082748774c34b0bcb5391c0cb34ed8aa4a5b9cca4f682e6ff3748f82ee78a5636f84c878148cc7020890befffaa4506cebbef9a3f7c67178f2"

    invoke-static {v0}, Ln;->b(Ljava/lang/String;)[B

    move-result-object v0

    const/4 v1, 0x0

    const/16 v2, 0x100

    invoke-static {v0, v1, v2}, Ln;->Code([BII)[I

    move-result-object v0

    sput-object v0, Lr;->Z:[I

    return-void
.end method

.method public constructor <init>()V
    .locals 1

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    const/4 v0, 0x4

    new-array v0, v0, [B

    iput-object v0, p0, Lr;->f:[B

    const/16 v0, 0x40

    new-array v0, v0, [I

    iput-object v0, p0, Lr;->Code:[I

    invoke-direct {p0}, Lr;->Code()V

    return-void
.end method

.method private static Code(III)I
    .locals 3

    ushr-int/lit8 v0, p0, 0x6

    shl-int/lit8 v1, p0, 0x1a

    or-int/2addr v0, v1

    ushr-int/lit8 v1, p0, 0xb

    shl-int/lit8 v2, p0, 0x15

    or-int/2addr v1, v2

    xor-int/2addr v0, v1

    ushr-int/lit8 v1, p0, 0x19

    shl-int/lit8 v2, p0, 0x7

    or-int/2addr v1, v2

    xor-int/2addr v0, v1

    and-int v1, p0, p1

    xor-int/lit8 v2, p0, -0x1

    and-int/2addr v2, p2

    xor-int/2addr v1, v2

    add-int/2addr v0, v1

    return v0
.end method

.method private Code()V
    .locals 3

    const/4 v2, 0x0

    iput v2, p0, Lr;->h:I

    iput v2, p0, Lr;->g:I

    move v0, v2

    :goto_0
    iget-object v1, p0, Lr;->f:[B

    array-length v1, v1

    if-ge v0, v1, :cond_0

    iget-object v1, p0, Lr;->f:[B

    aput-byte v2, v1, v0

    add-int/lit8 v0, v0, 0x1

    goto :goto_0

    :cond_0
    iput v2, p0, Lr;->I:I

    move v0, v2

    :goto_1
    iget-object v1, p0, Lr;->Code:[I

    array-length v1, v1

    if-ge v0, v1, :cond_1

    iget-object v1, p0, Lr;->Code:[I

    aput v2, v1, v0

    add-int/lit8 v0, v0, 0x1

    goto :goto_1

    :cond_1
    const v0, 0x6a09e667

    iput v0, p0, Lr;->J:I

    const v0, -0x4498517b

    iput v0, p0, Lr;->B:I

    const v0, 0x3c6ef372

    iput v0, p0, Lr;->C:I

    const v0, -0x5ab00ac6

    iput v0, p0, Lr;->a:I

    const v0, 0x510e527f

    iput v0, p0, Lr;->b:I

    const v0, -0x64fa9774

    iput v0, p0, Lr;->c:I

    const v0, 0x1f83d9ab

    iput v0, p0, Lr;->d:I

    const v0, 0x5be0cd19

    iput v0, p0, Lr;->e:I

    return-void
.end method

.method private Code(B)V
    .locals 4

    const/4 v3, 0x0

    iget-object v0, p0, Lr;->f:[B

    iget v1, p0, Lr;->g:I

    add-int/lit8 v2, v1, 0x1

    iput v2, p0, Lr;->g:I

    aput-byte p1, v0, v1

    iget v0, p0, Lr;->g:I

    iget-object v1, p0, Lr;->f:[B

    array-length v1, v1

    if-ne v0, v1, :cond_0

    iget-object v0, p0, Lr;->f:[B

    invoke-direct {p0, v0, v3}, Lr;->I([BI)V

    iput v3, p0, Lr;->g:I

    :cond_0
    iget v0, p0, Lr;->h:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lr;->h:I

    return-void
.end method

.method private static Code(I[BI)V
    .locals 2

    ushr-int/lit8 v0, p0, 0x18

    int-to-byte v0, v0

    aput-byte v0, p1, p2

    add-int/lit8 v0, p2, 0x1

    ushr-int/lit8 v1, p0, 0x10

    int-to-byte v1, v1

    aput-byte v1, p1, v0

    add-int/lit8 v0, p2, 0x2

    ushr-int/lit8 v1, p0, 0x8

    int-to-byte v1, v1

    aput-byte v1, p1, v0

    add-int/lit8 v0, p2, 0x3

    int-to-byte v1, p0

    aput-byte v1, p1, v0

    return-void
.end method

.method private static I(III)I
    .locals 3

    ushr-int/lit8 v0, p0, 0x2

    shl-int/lit8 v1, p0, 0x1e

    or-int/2addr v0, v1

    ushr-int/lit8 v1, p0, 0xd

    shl-int/lit8 v2, p0, 0x13

    or-int/2addr v1, v2

    xor-int/2addr v0, v1

    ushr-int/lit8 v1, p0, 0x16

    shl-int/lit8 v2, p0, 0xa

    or-int/2addr v1, v2

    xor-int/2addr v0, v1

    and-int v1, p0, p1

    and-int v2, p0, p2

    xor-int/2addr v1, v2

    and-int v2, p1, p2

    xor-int/2addr v1, v2

    add-int/2addr v0, v1

    return v0
.end method

.method private I()V
    .locals 20

    const/16 v2, 0x10

    :goto_0
    const/16 v3, 0x3f

    if-gt v2, v3, :cond_0

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v3, v0

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v4, v0

    const/4 v5, 0x2

    sub-int v5, v2, v5

    aget v4, v4, v5

    ushr-int/lit8 v5, v4, 0x11

    shl-int/lit8 v6, v4, 0xf

    or-int/2addr v5, v6

    ushr-int/lit8 v6, v4, 0x13

    shl-int/lit8 v7, v4, 0xd

    or-int/2addr v6, v7

    xor-int/2addr v5, v6

    ushr-int/lit8 v4, v4, 0xa

    xor-int/2addr v4, v5

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v5, v0

    const/4 v6, 0x7

    sub-int v6, v2, v6

    aget v5, v5, v6

    add-int/2addr v4, v5

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v5, v0

    const/16 v6, 0xf

    sub-int v6, v2, v6

    aget v5, v5, v6

    ushr-int/lit8 v6, v5, 0x7

    shl-int/lit8 v7, v5, 0x19

    or-int/2addr v6, v7

    ushr-int/lit8 v7, v5, 0x12

    shl-int/lit8 v8, v5, 0xe

    or-int/2addr v7, v8

    xor-int/2addr v6, v7

    ushr-int/lit8 v5, v5, 0x3

    xor-int/2addr v5, v6

    add-int/2addr v4, v5

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v5, v0

    const/16 v6, 0x10

    sub-int v6, v2, v6

    aget v5, v5, v6

    add-int/2addr v4, v5

    aput v4, v3, v2

    add-int/lit8 v2, v2, 0x1

    goto :goto_0

    :cond_0
    move-object/from16 v0, p0

    iget v0, v0, Lr;->J:I

    move v2, v0

    move-object/from16 v0, p0

    iget v0, v0, Lr;->B:I

    move v3, v0

    move-object/from16 v0, p0

    iget v0, v0, Lr;->C:I

    move v4, v0

    move-object/from16 v0, p0

    iget v0, v0, Lr;->a:I

    move v5, v0

    move-object/from16 v0, p0

    iget v0, v0, Lr;->b:I

    move v6, v0

    move-object/from16 v0, p0

    iget v0, v0, Lr;->c:I

    move v7, v0

    move-object/from16 v0, p0

    iget v0, v0, Lr;->d:I

    move v8, v0

    move-object/from16 v0, p0

    iget v0, v0, Lr;->e:I

    move v9, v0

    const/4 v10, 0x0

    const/4 v11, 0x0

    move v15, v11

    move v11, v2

    move v2, v15

    move/from16 v16, v9

    move v9, v4

    move/from16 v4, v16

    move/from16 v17, v7

    move v7, v6

    move/from16 v6, v17

    move/from16 v18, v5

    move v5, v8

    move/from16 v8, v18

    move/from16 v19, v3

    move v3, v10

    move/from16 v10, v19

    :goto_1
    const/16 v12, 0x8

    if-ge v2, v12, :cond_1

    invoke-static {v7, v6, v5}, Lr;->Code(III)I

    move-result v12

    sget-object v13, Lr;->Z:[I

    aget v13, v13, v3

    add-int/2addr v12, v13

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v13, v0

    add-int/lit8 v14, v3, 0x1

    aget v3, v13, v3

    add-int/2addr v3, v12

    add-int/2addr v3, v4

    add-int v4, v8, v3

    invoke-static {v11, v10, v9}, Lr;->I(III)I

    move-result v8

    add-int/2addr v3, v8

    invoke-static {v4, v7, v6}, Lr;->Code(III)I

    move-result v8

    sget-object v12, Lr;->Z:[I

    aget v12, v12, v14

    add-int/2addr v8, v12

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v12, v0

    add-int/lit8 v13, v14, 0x1

    aget v12, v12, v14

    add-int/2addr v8, v12

    add-int/2addr v5, v8

    add-int v8, v9, v5

    invoke-static {v3, v11, v10}, Lr;->I(III)I

    move-result v9

    add-int/2addr v5, v9

    invoke-static {v8, v4, v7}, Lr;->Code(III)I

    move-result v9

    sget-object v12, Lr;->Z:[I

    aget v12, v12, v13

    add-int/2addr v9, v12

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v12, v0

    add-int/lit8 v14, v13, 0x1

    aget v12, v12, v13

    add-int/2addr v9, v12

    add-int/2addr v6, v9

    add-int v9, v10, v6

    invoke-static {v5, v3, v11}, Lr;->I(III)I

    move-result v10

    add-int/2addr v6, v10

    invoke-static {v9, v8, v4}, Lr;->Code(III)I

    move-result v10

    sget-object v12, Lr;->Z:[I

    aget v12, v12, v14

    add-int/2addr v10, v12

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v12, v0

    add-int/lit8 v13, v14, 0x1

    aget v12, v12, v14

    add-int/2addr v10, v12

    add-int/2addr v7, v10

    add-int v10, v11, v7

    invoke-static {v6, v5, v3}, Lr;->I(III)I

    move-result v11

    add-int/2addr v7, v11

    invoke-static {v10, v9, v8}, Lr;->Code(III)I

    move-result v11

    sget-object v12, Lr;->Z:[I

    aget v12, v12, v13

    add-int/2addr v11, v12

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v12, v0

    add-int/lit8 v14, v13, 0x1

    aget v12, v12, v13

    add-int/2addr v11, v12

    add-int/2addr v4, v11

    add-int/2addr v3, v4

    invoke-static {v7, v6, v5}, Lr;->I(III)I

    move-result v11

    add-int/2addr v4, v11

    invoke-static {v3, v10, v9}, Lr;->Code(III)I

    move-result v11

    sget-object v12, Lr;->Z:[I

    aget v12, v12, v14

    add-int/2addr v11, v12

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v12, v0

    add-int/lit8 v13, v14, 0x1

    aget v12, v12, v14

    add-int/2addr v11, v12

    add-int/2addr v8, v11

    add-int/2addr v5, v8

    invoke-static {v4, v7, v6}, Lr;->I(III)I

    move-result v11

    add-int/2addr v8, v11

    invoke-static {v5, v3, v10}, Lr;->Code(III)I

    move-result v11

    sget-object v12, Lr;->Z:[I

    aget v12, v12, v13

    add-int/2addr v11, v12

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v12, v0

    add-int/lit8 v14, v13, 0x1

    aget v12, v12, v13

    add-int/2addr v11, v12

    add-int/2addr v9, v11

    add-int/2addr v6, v9

    invoke-static {v8, v4, v7}, Lr;->I(III)I

    move-result v11

    add-int/2addr v9, v11

    invoke-static {v6, v5, v3}, Lr;->Code(III)I

    move-result v11

    sget-object v12, Lr;->Z:[I

    aget v12, v12, v14

    add-int/2addr v11, v12

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v12, v0

    add-int/lit8 v13, v14, 0x1

    aget v12, v12, v14

    add-int/2addr v11, v12

    add-int/2addr v10, v11

    add-int/2addr v7, v10

    invoke-static {v9, v8, v4}, Lr;->I(III)I

    move-result v11

    add-int/2addr v10, v11

    add-int/lit8 v2, v2, 0x1

    move v11, v10

    move v10, v9

    move v9, v8

    move v8, v4

    move v4, v3

    move v3, v13

    goto/16 :goto_1

    :cond_1
    move-object/from16 v0, p0

    iget v0, v0, Lr;->J:I

    move v2, v0

    add-int/2addr v2, v11

    move v0, v2

    move-object/from16 v1, p0

    iput v0, v1, Lr;->J:I

    move-object/from16 v0, p0

    iget v0, v0, Lr;->B:I

    move v2, v0

    add-int/2addr v2, v10

    move v0, v2

    move-object/from16 v1, p0

    iput v0, v1, Lr;->B:I

    move-object/from16 v0, p0

    iget v0, v0, Lr;->C:I

    move v2, v0

    add-int/2addr v2, v9

    move v0, v2

    move-object/from16 v1, p0

    iput v0, v1, Lr;->C:I

    move-object/from16 v0, p0

    iget v0, v0, Lr;->a:I

    move v2, v0

    add-int/2addr v2, v8

    move v0, v2

    move-object/from16 v1, p0

    iput v0, v1, Lr;->a:I

    move-object/from16 v0, p0

    iget v0, v0, Lr;->b:I

    move v2, v0

    add-int/2addr v2, v7

    move v0, v2

    move-object/from16 v1, p0

    iput v0, v1, Lr;->b:I

    move-object/from16 v0, p0

    iget v0, v0, Lr;->c:I

    move v2, v0

    add-int/2addr v2, v6

    move v0, v2

    move-object/from16 v1, p0

    iput v0, v1, Lr;->c:I

    move-object/from16 v0, p0

    iget v0, v0, Lr;->d:I

    move v2, v0

    add-int/2addr v2, v5

    move v0, v2

    move-object/from16 v1, p0

    iput v0, v1, Lr;->d:I

    move-object/from16 v0, p0

    iget v0, v0, Lr;->e:I

    move v2, v0

    add-int/2addr v2, v4

    move v0, v2

    move-object/from16 v1, p0

    iput v0, v1, Lr;->e:I

    const/4 v2, 0x0

    move v0, v2

    move-object/from16 v1, p0

    iput v0, v1, Lr;->I:I

    const/4 v2, 0x0

    :goto_2
    const/16 v3, 0x10

    if-ge v2, v3, :cond_2

    move-object/from16 v0, p0

    iget-object v0, v0, Lr;->Code:[I

    move-object v3, v0

    const/4 v4, 0x0

    aput v4, v3, v2

    add-int/lit8 v2, v2, 0x1

    goto :goto_2

    :cond_2
    return-void
.end method

.method private I([BI)V
    .locals 4

    iget-object v0, p0, Lr;->Code:[I

    iget v1, p0, Lr;->I:I

    add-int/lit8 v2, v1, 0x1

    iput v2, p0, Lr;->I:I

    aget-byte v2, p1, p2

    and-int/lit16 v2, v2, 0xff

    shl-int/lit8 v2, v2, 0x18

    add-int/lit8 v3, p2, 0x1

    aget-byte v3, p1, v3

    and-int/lit16 v3, v3, 0xff

    shl-int/lit8 v3, v3, 0x10

    or-int/2addr v2, v3

    add-int/lit8 v3, p2, 0x2

    aget-byte v3, p1, v3

    and-int/lit16 v3, v3, 0xff

    shl-int/lit8 v3, v3, 0x8

    or-int/2addr v2, v3

    add-int/lit8 v3, p2, 0x3

    aget-byte v3, p1, v3

    and-int/lit16 v3, v3, 0xff

    or-int/2addr v2, v3

    aput v2, v0, v1

    iget v0, p0, Lr;->I:I

    const/16 v1, 0x10

    if-ne v0, v1, :cond_0

    invoke-direct {p0}, Lr;->I()V

    :cond_0
    return-void
.end method


# virtual methods
.method public final Code(I)V
    .locals 1

    ushr-int/lit8 v0, p1, 0x18

    int-to-byte v0, v0

    invoke-direct {p0, v0}, Lr;->Code(B)V

    ushr-int/lit8 v0, p1, 0x10

    int-to-byte v0, v0

    invoke-direct {p0, v0}, Lr;->Code(B)V

    ushr-int/lit8 v0, p1, 0x8

    int-to-byte v0, v0

    invoke-direct {p0, v0}, Lr;->Code(B)V

    int-to-byte v0, p1

    invoke-direct {p0, v0}, Lr;->Code(B)V

    return-void
.end method

.method public final Code([BI)V
    .locals 3

    iget v0, p0, Lr;->h:I

    shl-int/lit8 v0, v0, 0x3

    const/16 v1, -0x80

    invoke-direct {p0, v1}, Lr;->Code(B)V

    :goto_0
    iget v1, p0, Lr;->g:I

    if-eqz v1, :cond_0

    const/4 v1, 0x0

    invoke-direct {p0, v1}, Lr;->Code(B)V

    goto :goto_0

    :cond_0
    iget v1, p0, Lr;->I:I

    const/16 v2, 0xe

    if-le v1, v2, :cond_1

    invoke-direct {p0}, Lr;->I()V

    :cond_1
    iget-object v1, p0, Lr;->Code:[I

    const/16 v2, 0xf

    aput v0, v1, v2

    invoke-direct {p0}, Lr;->I()V

    iget v0, p0, Lr;->J:I

    invoke-static {v0, p1, p2}, Lr;->Code(I[BI)V

    iget v0, p0, Lr;->B:I

    add-int/lit8 v1, p2, 0x4

    invoke-static {v0, p1, v1}, Lr;->Code(I[BI)V

    iget v0, p0, Lr;->C:I

    add-int/lit8 v1, p2, 0x8

    invoke-static {v0, p1, v1}, Lr;->Code(I[BI)V

    iget v0, p0, Lr;->a:I

    add-int/lit8 v1, p2, 0xc

    invoke-static {v0, p1, v1}, Lr;->Code(I[BI)V

    iget v0, p0, Lr;->b:I

    add-int/lit8 v1, p2, 0x10

    invoke-static {v0, p1, v1}, Lr;->Code(I[BI)V

    iget v0, p0, Lr;->c:I

    add-int/lit8 v1, p2, 0x14

    invoke-static {v0, p1, v1}, Lr;->Code(I[BI)V

    iget v0, p0, Lr;->d:I

    add-int/lit8 v1, p2, 0x18

    invoke-static {v0, p1, v1}, Lr;->Code(I[BI)V

    iget v0, p0, Lr;->e:I

    add-int/lit8 v1, p2, 0x1c

    invoke-static {v0, p1, v1}, Lr;->Code(I[BI)V

    invoke-direct {p0}, Lr;->Code()V

    return-void
.end method

.method public final Code([BII)V
    .locals 4

    move v0, p3

    move v1, p2

    :goto_0
    iget v2, p0, Lr;->g:I

    if-eqz v2, :cond_0

    if-lez v0, :cond_0

    aget-byte v2, p1, v1

    invoke-direct {p0, v2}, Lr;->Code(B)V

    add-int/lit8 v1, v1, 0x1

    add-int/lit8 v0, v0, -0x1

    goto :goto_0

    :cond_0
    :goto_1
    iget-object v2, p0, Lr;->f:[B

    array-length v2, v2

    if-le v0, v2, :cond_1

    invoke-direct {p0, p1, v1}, Lr;->I([BI)V

    iget-object v2, p0, Lr;->f:[B

    array-length v2, v2

    add-int/2addr v1, v2

    iget-object v2, p0, Lr;->f:[B

    array-length v2, v2

    sub-int/2addr v0, v2

    iget v2, p0, Lr;->h:I

    iget-object v3, p0, Lr;->f:[B

    array-length v3, v3

    add-int/2addr v2, v3

    iput v2, p0, Lr;->h:I

    goto :goto_1

    :cond_1
    :goto_2
    if-lez v0, :cond_2

    aget-byte v2, p1, v1

    invoke-direct {p0, v2}, Lr;->Code(B)V

    add-int/lit8 v1, v1, 0x1

    add-int/lit8 v0, v0, -0x1

    goto :goto_2

    :cond_2
    return-void
.end method
